<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 继承Array
        class NorepeatArray extends Array {

            // 添加一个filterRepeat方法，原地去重
            filterRepeat() {
                let index = 0
                while (index !== this.length) {

                    /* 如果非首次出现 则干掉当前index对应的元素 */
                    const item = this[index]
                    if (this.indexOf(item) !== index) {
                        this.splice(index, 1)

                        // 开始看下一个
                        continue
                    }

                    // 如果没有删除动作 则向后移动游标
                    index++
                }
            }

            // push/unshift/splice等方法
            // 如果要添加的元素不存在就直接调用super.push/unshift/splice
            // 否则啥也不干
            push(...items) {
                console.log("my push", this);
                items.forEach(
                    // 如果要push的元素未曾出现过 则push
                    (item, index) => {
                        if (this.indexOf(item) === -1) {
                            super.push(item)
                        }
                    }
                )
            }

            


        }





    </script>

    <script>
        // const nArr = new NorepeatArray()
        // nArr.push(1, 1, 2, 2, 3, 3)
        // nArr.unshift(0, 0.5)
        // nArr.splice(1, 1)
        // console.log(nArr);

        // // 去重
        // nArr.filterRepeat()
        // console.log(nArr);

        const nArr = new NorepeatArray().initAutoKilling()
        nArr.push(4, 4, 5, 5, 6, 6)
        console.log(nArr);

        // nArr.unshift(5, 6, 7)
        // console.log(nArr);

    </script>
</body>

</html>